//
//  UserAccountViewModel.swift
//  weibo
//
//  Created by tomato on 2021/9/30.
//

import Foundation

//用户账户视图模型 - 没有父类
/*
 模型通常继承自NSObject
 如果没有父类，所有的内容，都需要从头创建，量级更轻
 视图模型的作用:封装业务逻辑，通常没有复杂的属性
 */

class UserAccountViewModel {
    /// 账号模型
    var account: UserAccount?
    //用户登录标记
    var userLogin: Bool{
        //token有值且没有过期
         return account?.access_token != nil && !isExpired
    }
    
    //归档保存路径-计算型属性（类似于有返回值的参数)
    private var accountPath:String {
        //1、保存路径
        let path = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask, true).last!
//        print("用户信息路径:\(path)")
        return (path as NSString).appendingPathComponent("account.plist")
    }
    
    //判断用户是否过期
    private var isExpired:Bool {
        if account?.expiresDate?.compare(NSDate() as Date) == ComparisonResult.orderedDescending {
            // 没有过期
            return false
        }
        //如果过期 返回true
        return true
    }
    
    //构造函数
    init(){
        // 从沙盒解档数据，回复当前数据
        account = NSKeyedUnarchiver.unarchiveObject(withFile:accountPath ) as? UserAccount
        if isExpired {
            //过期，账号为nil
            account = nil
        } 
    }
}
